/*
Copyright (C) 2004 Jacquelin POTIER <jacquelin.potier@free.fr>
Dynamic aspect ratio code Copyright (C) 2004 Jacquelin POTIER <jacquelin.potier@free.fr>

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/

//-----------------------------------------------------------------------------
// Object: manage Software Update
//-----------------------------------------------------------------------------


// get last software release info from an xml file like
// <PROGRAM_VERSION>3.1.3.0</PROGRAM_VERSION><PROGRAM_CHANGE_INFO>Software description</PROGRAM_CHANGE_INFO>
// this information is present in PAD files like those generated by PADGen

#pragma once

#include <windows.h>
#pragma warning (push)
#pragma warning(disable : 4005)// for '_stprintf' : macro redefinition in tchar.h
#include <TCHAR.h>
#pragma warning (pop)

#include "../File/StdFileOperations.h"
#include "../Version/Version.h"
#include "../Network/HTTP.h"
#include "../String/AnsiUnicodeConvert.h"

#define XML_MARKUP_VERSION          "PROGRAM_VERSION"
#define XML_MARKUP_DESCRIPTION      "PROGRAM_CHANGE_INFO"

class CSoftwareUpdate
{
private:
    static void DisplayNewVersionInfos(TCHAR* pszNewVersionDownloadQuery,TCHAR* DownloadLink);
    static BOOL ReadXMLMarkupContent(char* FullString,char* Markup,char** ppszContent,DWORD* pContentLength,char** pPointerAfterEndingMarkup);
public:
    static BOOL CheckForUpdate(TCHAR* UrlOfLastVersionInfoFile,DWORD VersionNbDigits,TCHAR* DownloadLink);
    static BOOL CheckForUpdate(TCHAR* UrlOfLastVersionInfoFile,DWORD VersionNbDigits,TCHAR* DownloadLink,BOOL bDisplayDialog,BOOL* pbNewVersionIsAvailable);
};
